<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <h1>JS 自动转换</h1>
    <script>
        // 自动转换
        
        // 数字环境
        console.log(100 - '100a'); //自动转换为 NaN 因为 Number('100a') 为NaN
        console.log(100 - '100') ; //数值无法 与字符串相减 所以 返回 0 number 类型; 
        console.log(100 * false); //数值 与浮点相减 所以 返回 0
        // number类型; 
        console.log(100 / true);    // 同理
        console.log(100 % true);    // 同上

        // 字符串 环境 + 
        console.log(100 + '100'); // "+" 代表拼接的优先级大于 加法的优先级 所以 这里输出为 100100 为 字符串类型
        console.log(100 + Number('100')); // 强制转变为number类型;

        // 布尔环境
        // if (10 + 10) {} 返回 T/F; 
        if (NaN){
            console.log(true);
        } else {
            console.log(false);
        }                   // 返回 T/F; 
        
        // 无穷数
        console.log(55 / 0); // Infinity
        console.log(-55 / 0); // Infinity;
        console.log(0 / 0); //NaN 原则上不允许 但 人为定义结果为 NaN;


        // 浮点精度问题
        console.log(0.1 + 0.2); //返回 0.30000000000004 不准确
        console.log((0.1 + 0.2).toFixed(2)); //可以用toFixed函数 来保留小数点后几位    '.'   代表 将0.1+0.2运行后的结果交给 toFixed处理;

        // php中 相当于 BC MATH; 中 bcadd; 其余 参见手册 

    </script>
</body>
</html>